declare i32 @getint()
declare void @putint(i32)
declare void @putch(i32)
declare void @putstr(i8*)
@0 = dso_local global [4 x [2 x i32]] [[2 x i32] [i32 1, i32 0], [2 x i32] [i32 0, i32 -1], [2 x i32] [i32 -1, i32 0], [2 x i32] [i32 0, i32 1]]
@1 = dso_local constant i32 3
@2 = dso_local constant [4 x [2 x i32]] [[2 x i32] [i32 1, i32 0], [2 x i32] [i32 0, i32 -1], [2 x i32] [i32 -1, i32 0], [2 x i32] [i32 0, i32 1]]
@3 = dso_local constant [2 x i32] [i32 1, i32 2]
@4 = dso_local global i32 0
@5 = dso_local global [2 x i32] [i32 3, i32 1]
define dso_local i32 @getDif3N(i32 %t_0, i32 %t_2){
b_0:
	%t_1 = alloca i32
	store i32 %t_0, i32* %t_1
	%t_3 = alloca i32
	store i32 %t_2, i32* %t_3
	%t_4 = alloca i32
	store i32 1, i32* %t_4
	%t_5 = alloca i32
	store i32 1, i32* %t_5
	%t_6 = alloca i32
	store i32 1, i32* %t_6
	%t_7 = alloca i32
	store i32 0, i32* %t_7
	%t_8 = alloca [2 x i32]
	%t_9 = getelementptr [2 x i32], [2 x i32]* %t_8, i32 0, i32 0
	store i32 1, i32* %t_9
	%t_10 = getelementptr [2 x i32], [2 x i32]* %t_8, i32 0, i32 1
	store i32 2, i32* %t_10
	br label %b_4
	br label %b_4
b_4:
	%t_11 = load i32, i32* %t_4
	%t_12 = icmp sle i32 %t_11, 3
	br i1 %t_12, label %b_2, label %b_1
	br label %b_4
b_2:
	store i32 1, i32* %t_5
	br label %b_8
	br label %b_8
b_8:
	%t_13 = load i32, i32* %t_5
	%t_14 = icmp sle i32 %t_13, 3
	br i1 %t_14, label %b_6, label %b_5
	br label %b_8
b_6:
	store i32 1, i32* %t_6
	br label %b_12
	br label %b_12
b_12:
	%t_15 = load i32, i32* %t_6
	%t_16 = icmp sle i32 %t_15, 3
	br i1 %t_16, label %b_10, label %b_9
	br label %b_12
b_10:
	br label %b_15
b_15:
	%t_17 = load i32, i32* %t_4
	%t_18 = load i32, i32* %t_5
	%t_19 = icmp ne i32 %t_17, %t_18
	br i1 %t_19, label %b_16, label %b_14
b_16:
	%t_20 = load i32, i32* %t_4
	%t_21 = load i32, i32* %t_6
	%t_22 = icmp ne i32 %t_20, %t_21
	br i1 %t_22, label %b_17, label %b_14
b_17:
	%t_23 = load i32, i32* %t_5
	%t_24 = load i32, i32* %t_6
	%t_25 = icmp ne i32 %t_23, %t_24
	br i1 %t_25, label %b_13, label %b_14
b_13:
	%t_26 = load i32, i32* %t_7
	%t_27 = add i32 %t_26, 1
	store i32 %t_27, i32* %t_7
	br label %b_14
b_14:
	%t_28 = load i32, i32* %t_6
	%t_29 = add i32 %t_28, 1
	store i32 %t_29, i32* %t_6
	br label %b_11
b_11:
	br label %b_12
b_9:
	%t_30 = load i32, i32* %t_5
	%t_31 = add i32 %t_30, 1
	store i32 %t_31, i32* %t_5
	br label %b_7
b_7:
	br label %b_8
b_5:
	%t_32 = load i32, i32* %t_4
	%t_33 = add i32 %t_32, 1
	store i32 %t_33, i32* %t_4
	br label %b_3
b_3:
	br label %b_4
b_1:
	%t_34 = load i32, i32* %t_7
	ret i32 %t_34
}

define dso_local i32 @judgeB(i32 %t_0, i32 %t_2){
b_18:
	%t_1 = alloca i32
	store i32 %t_0, i32* %t_1
	%t_3 = alloca i32
	store i32 %t_2, i32* %t_3
	br label %b_22
b_22:
	%t_4 = load i32, i32* %t_1
	%t_5 = load i32, i32* %t_3
	%t_6 = icmp sle i32 %t_4, %t_5
	br i1 %t_6, label %b_19, label %b_20
b_19:
	br label %b_26
b_20:
	br label %b_32
b_21:
	ret i32 0
b_26:
	%t_7 = load i32, i32* %t_1
	%t_8 = load i32, i32* %t_3
	%t_9 = icmp slt i32 %t_7, %t_8
	br i1 %t_9, label %b_23, label %b_24
b_23:
	%t_10 = load i32, i32* %t_1
	%t_11 = load i32, i32* %t_3
	%t_12 = sub i32 %t_10, %t_11
	ret i32 %t_12
	br label %b_25
b_24:
	br label %b_29
b_25:
	br label %b_21
b_29:
	%t_13 = load i32, i32* %t_1
	%t_14 = load i32, i32* %t_3
	%t_15 = icmp eq i32 %t_13, %t_14
	br i1 %t_15, label %b_27, label %b_28
b_27:
	ret i32 0
	br label %b_28
b_28:
	br label %b_25
b_32:
	%t_16 = load i32, i32* %t_1
	%t_17 = load i32, i32* %t_3
	%t_18 = icmp sge i32 %t_16, %t_17
	br i1 %t_18, label %b_30, label %b_31
b_30:
	br label %b_36
b_31:
	br label %b_21
b_36:
	%t_19 = load i32, i32* %t_1
	%t_20 = load i32, i32* %t_3
	%t_21 = icmp sgt i32 %t_19, %t_20
	br i1 %t_21, label %b_33, label %b_34
b_33:
	%t_22 = load i32, i32* %t_1
	%t_23 = load i32, i32* %t_3
	%t_24 = sub i32 %t_22, %t_23
	ret i32 %t_24
	br label %b_35
b_34:
	br label %b_39
b_35:
	br label %b_31
b_39:
	%t_25 = load i32, i32* %t_1
	%t_26 = load i32, i32* %t_3
	%t_27 = icmp eq i32 %t_25, %t_26
	br i1 %t_27, label %b_37, label %b_38
b_37:
	ret i32 0
	br label %b_38
b_38:
	br label %b_35
}

define dso_local void @printArr(i32* %t_0){
b_40:
	%t_1 = alloca i32*
	store i32* %t_0, i32** %t_1
	%t_2 = alloca i32
	store i32 0, i32* %t_2
	br label %b_44
	br label %b_44
b_44:
	%t_3 = load i32, i32* %t_2
	%t_4 = icmp slt i32 %t_3, 2
	br i1 %t_4, label %b_42, label %b_41
	br label %b_44
b_42:
	%t_5 = load i32, i32* %t_2
	%t_6 = load i32*, i32** %t_1
	%t_7 = getelementptr i32, i32* %t_6, i32 %t_5
	%t_8 = load i32, i32* %t_7
	call void @putint(i32 %t_8)
	%t_9 = load i32, i32* %t_2
	%t_10 = add i32 %t_9, 1
	store i32 %t_10, i32* %t_2
	br label %b_43
b_43:
	br label %b_44
b_41:
	call void @putch(i32 10)
	ret void
}

define dso_local void @printArr2([2 x i32]* %t_0){
b_45:
	%t_1 = alloca [2 x i32]*
	store [2 x i32]* %t_0, [2 x i32]** %t_1
	%t_2 = alloca i32
	store i32 0, i32* %t_2
	br label %b_49
	br label %b_49
b_49:
	%t_3 = load i32, i32* %t_2
	%t_4 = icmp slt i32 %t_3, 4
	br i1 %t_4, label %b_47, label %b_46
	br label %b_49
b_47:
	%t_5 = load i32, i32* %t_2
	%t_6 = load [2 x i32]*, [2 x i32]** %t_1
	%t_7 = getelementptr [2 x i32], [2 x i32]* %t_6, i32 %t_5
	%t_8 = load i32, i32* %t_7
	call void @printArr(i32* %t_8)
	%t_9 = load i32, i32* %t_2
	%t_10 = add i32 %t_9, 1
	store i32 %t_10, i32* %t_2
	br label %b_48
b_48:
	br label %b_49
b_46:
	ret void
}

define dso_local void @printHello(){
b_50:
	%t_0 = alloca i32
	%t_1 = call i32 @getint()
	store i32 %t_1, i32* %t_0
	%t_2 = load i32, i32* %t_0
	call void @putch(i32 72)
	call void @putch(i32 101)
	call void @putch(i32 108)
	call void @putch(i32 108)
	call void @putch(i32 111)
	call void @putch(i32 32)
	call void @putint(i32 %t_2)
	call void @putch(i32 10)
	ret void
}

define dso_local i32 @add(i32 %t_0){
b_51:
	%t_1 = alloca i32
	store i32 %t_0, i32* %t_1
	%t_2 = alloca i32
	%t_3 = load i32, i32* %t_1
	%t_4 = add i32 %t_3, 3
	store i32 %t_4, i32* %t_2
	%t_5 = load i32, i32* %t_2
	ret i32 %t_5
}

define dso_local void @opp(){
b_52:
	ret void
}

define dso_local i32 @main(){
b_53:
	%t_0 = alloca i32
	store i32 3, i32* %t_0
	%t_1 = alloca i32
	store i32 0, i32* %t_1
	%t_2 = alloca i32
	store i32 1, i32* %t_2
	br label %b_56
b_56:
	%t_3 = load i32, i32* %t_2
	%t_4 = icmp eq i32 0, %t_3
	%t_5 = zext i1 %t_4 to i32
	%t_6 = icmp ne i32 0, %t_5
	br i1 %t_6, label %b_54, label %b_55
b_54:
	store i32 0, i32* %t_2
	br label %b_55
b_55:
	%t_7 = add i32 0, 1
	store i32 %t_7, i32* %t_2
	%t_8 = sub i32 0, 1
	store i32 %t_8, i32* %t_2
	%t_9 = alloca i32
	%t_10 = add i32 16, 2
	%t_11 = load i32, i32* %t_1
	%t_12 = add i32 %t_11, 1
	%t_13 = sdiv i32 %t_10, %t_12
	%t_14 = sub i32 %t_13, 14
	%t_15 = getelementptr [4 x [2 x i32]], [4 x [2 x i32]]* @0, i32 0, i32 0, i32 0
	%t_17 = load i32, i32* %t_15
	%t_18 = add i32 %t_14, %t_17
	store i32 %t_18, i32* %t_9
	br label %b_60
	br label %b_60
b_60:
	%t_19 = load i32, i32* %t_1
	%t_20 = icmp sle i32 %t_19, 5
	br i1 %t_20, label %b_58, label %b_57
	br label %b_60
b_58:
	br label %b_63
b_63:
	%t_21 = load i32, i32* %t_1
	%t_22 = icmp eq i32 %t_21, 3
	br i1 %t_22, label %b_61, label %b_62
b_61:
	%t_23 = load i32, i32* %t_1
	%t_24 = add i32 %t_23, 1
	store i32 %t_24, i32* %t_1
	br label %b_59
	br label %b_62
b_62:
	br label %b_67
b_67:
	%t_25 = load i32, i32* %t_1
	%t_26 = icmp eq i32 %t_25, 5
	br i1 %t_26, label %b_64, label %b_65
b_64:
	br label %b_57
	br label %b_66
b_65:
	%t_27 = alloca i32
	%t_28 = load i32, i32* %t_1
	store i32 %t_28, i32* %t_27
	br label %b_66
b_66:
	%t_29 = load i32, i32* %t_1
	%t_30 = add i32 %t_29, 1
	store i32 %t_30, i32* %t_1
	br label %b_59
b_59:
	br label %b_60
b_57:
	%t_31 = call i32 @getint()
	store i32 %t_31, i32* %t_0
	%t_32 = load i32, i32* %t_0
	%t_33 = call i32 @add(i32 %t_32)
	call void @putint(i32 %t_33)
	call void @putch(i32 10)
	%t_34 = call i32 @getDif3N(i32 1, i32 999)
	store i32 %t_34, i32* %t_0
	%t_35 = load i32, i32* %t_0
	call void @putint(i32 %t_35)
	call void @putch(i32 10)
	%t_36 = call i32 @judgeB(i32 2, i32 3)
	store i32 %t_36, i32* %t_0
	%t_37 = load i32, i32* %t_0
	call void @putch(i32 106)
	call void @putch(i32 117)
	call void @putch(i32 100)
	call void @putch(i32 103)
	call void @putch(i32 101)
	call void @putch(i32 66)
	call void @putch(i32 32)
	call void @putch(i32 50)
	call void @putch(i32 44)
	call void @putch(i32 51)
	call void @putch(i32 32)
	call void @putch(i32 61)
	call void @putch(i32 32)
	call void @putint(i32 %t_37)
	call void @putch(i32 10)
	call void @printHello()
	%t_38 = getelementptr [4 x [2 x i32]], [4 x [2 x i32]]* @0, i32 0, i32 0
	call void @printArr2([2 x i32]* %t_38)
	%t_39 = getelementptr [4 x [2 x i32]], [4 x [2 x i32]]* @0, i32 0, i32 0, i32 0
	call void @printArr(i32* %t_39)
	%t_41 = getelementptr [2 x i32], [2 x i32]* @5, i32 0, i32 0
	call void @printArr(i32* %t_41)
	ret i32 0
}
